UI组件
👷🛠️
UI组件提供一种OOP方式来对UI相关逻辑进行封装与管理
基本结构
local component = require '@common.base.gui.component' -- 提供GUI组件相关特性
local ctrl_util = require '@common.base.gui.control_util' -- 提供控件相关实用函数
local MyComponent = component 'MyComponent' {
-- 组件模板定义,可缺省
base.ui.panel {
-- ...
OtherComponent 'part_a' {
-- ...
},
-- ...
},
-- 组件属性定义,可缺省
prop = {
},
-- 组件数据定义,可缺省
data = {
},
-- 组件方法定义,可缺省
method = {
},
-- 组件事件定义,可缺省
event = {
},
-- 组件状态定义,可缺省
state = {
},
}
相关模块
require 相关模块来引入
- @common.base.gui.component GUI组件相关特性
- @common.base.gui.control_util 组件/控件相关的辅助函数,详见
local component = require '@common.base.gui.component'
local new = component.new
local destroy = component.destroy
local bind = component.bind
local getset = component.getset
local alias = component.alias
local alias_by = component.alias_by
local legacy_bind_prop = component.legacy_bind_prop
local anim_trans = component.anim_trans
local key_frame_state = component.key_frame_state
local ctrl_util = require '@common.base.gui.control_util'
local set_ctrl_prop = ctrl_util.set_ctrl_prop
local get_ctrl_prop = ctrl_util.get_ctrl_prop
local get_ctrl_type_name = ctrl_util.get_ctrl_type_name
local is_ctrl_exists = ctrl_util.is_ctrl_exists
local get_final_ext_component = ctrl_util.get_final_ext_component
local move_to_new_parent = ctrl_util.move_to_new_parent
local is_component_ctrl = ctrl_util.is_component_ctrl
内置控件
组件需要基于内置控件来组成,base.ui.<name>
都属于内置控件
建议熟悉内置控件的用法后再来使用组件
内置控件目前不属于组件,所以不具备组件特性(例如直接通过实例修改属性,内置控件需要通过 set_ctrl_prop 设置属性;当然也可不通过实例修改属性,通过 bind表,bind到属性,alias,选择器等也可设置)
local A = component {
base.ui.panel {
bind = {
color = 'color',
}
}
}
local a = A:new()
local ui_panel = a.ui -- 获得组件实例对应的根内置控件
a.bind.color = '#ffffff' -- 访问bind对象